package Controller;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

import persistence.EditoraDao;
import persistence.EditoraDaoImpl;

import model.Editora;

public class BotaoEditoraController implements ActionListener {

	JTextField txtidEditora, txtNomeEditora, txtCNPJ, txtEndereco, txtN,
			txtBairro, txtemail, txtTelefone, txtpesquisa;

	JButton btnNovo, btnSalvar, btnEditar, btnLimpar, btnSair, btnOk;

	JComboBox cmbCidade, cmbEstado;

	public BotaoEditoraController(JTextField txtidEditora,
			JTextField txtNomeEditora, JTextField txtCNPJ,
			JTextField txtEndereco, JTextField txtN, JTextField txtBairro,
			JTextField txtemail, JTextField txtTelefone,
			JTextField txtpesquisa, JButton btnNovo, JButton btnSalvar,
			JButton btnEditar, JButton btnLimpar, JButton btnSair,
			JButton btnOk, JComboBox cmbCidade, JComboBox cmbEstado) {

		this.txtidEditora = txtidEditora;
		this.txtNomeEditora = txtNomeEditora;
		this.txtCNPJ = txtCNPJ;
		this.txtEndereco = txtEndereco;
		this.txtN = txtN;
		this.txtBairro = txtBairro;
		this.txtemail = txtemail;
		this.txtTelefone = txtTelefone;
		this.txtpesquisa = txtpesquisa;

		this.cmbEstado = cmbEstado;
		this.cmbCidade = cmbCidade;

		this.btnNovo = btnNovo;
		this.btnSalvar = btnSalvar;
		this.btnEditar = btnEditar;
		this.btnLimpar = btnLimpar;
		this.btnSair = btnSair;
		this.btnOk = btnOk;
	}

	@Override
	public void actionPerformed(ActionEvent arg0) {
		Editora editora = new Editora();

		if (btnOk.hasFocus() == true) {
			editora.setIdEditora(Integer.parseInt(txtpesquisa.getText()));
			preencheCampos(editora);

		} else {
			if (btnLimpar.hasFocus() == true) {
				limpaCampos();
			} else {
				if (btnNovo.hasFocus() == true) {
					editora.setIdEditora(Integer.parseInt(txtpesquisa.getText()));
					excluir(editora);
				} else {
					editora.setIdEditora(Integer.parseInt(txtidEditora
							.getText()));
					editora.setNomeEditora(txtNomeEditora.getText());
					editora.setCNPJ(Integer.parseInt(txtCNPJ.getText()));
					editora.setEndereco(txtEndereco.getText());
					editora.setNum(Integer.parseInt(txtN.getText()));
					editora.setBairro(txtBairro.getText());
					editora.setEmail(txtemail.getText());
					editora.setTelefone(Integer.parseInt(txtTelefone.getText()));
					if (btnEditar.hasFocus() == true) {
						editar(editora);
					} else {
						if (btnSalvar.hasFocus() == true) {
							salvar(editora);
						}
					}
				}
			}
		}
	}

	private void excluir(Editora editora) {
		EditoraDao EDao = new EditoraDaoImpl();
		try {
			EDao.excluiEditora(editora);
			JOptionPane.showMessageDialog(null, "Excluido com sucesso",
					"Sucesso", JOptionPane.INFORMATION_MESSAGE);
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, e.getMessage(), "ERRO",
					JOptionPane.ERROR_MESSAGE);
		}

	}

	private void editar(Editora editora) {
		EditoraDao EDao = new EditoraDaoImpl();
		try {
			EDao.editaEditora(editora);
			JOptionPane.showMessageDialog(null, "Alterado com sucesso",
					"Sucesso", JOptionPane.INFORMATION_MESSAGE);
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, e.getMessage(), "ERRO",
					JOptionPane.ERROR_MESSAGE);
		}

	}

	private void preencheCampos(Editora editora) {
		EditoraDao EDao = new EditoraDaoImpl();
		Editora ed = new Editora();

		try {
			ed = EDao.pesquisaEditora(editora);
			txtidEditora.setText(String.valueOf(ed.getIdEditora()));
			txtNomeEditora.setText(ed.getNomeEditora());
			txtCNPJ.setText(String.valueOf(ed.getCNPJ()));
			txtEndereco.setText(ed.getEndereco());
			txtN.setText(String.valueOf(ed.getNum()));
			txtBairro.setText(ed.getBairro());
			txtemail.setText(ed.getEmail());
			txtTelefone.setText(String.valueOf(ed.getTelefone()));
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, e.getMessage(), "ERRO",
					JOptionPane.ERROR_MESSAGE);

		}

	}

	private void limpaCampos() {
		txtidEditora.setText("");
		txtNomeEditora.setText("");
		txtCNPJ.setText("");
		txtEndereco.setText("");
		txtN.setText("");
		txtBairro.setText("");
		txtemail.setText("");
		txtTelefone.setText("");
		txtpesquisa.setText("");

	}

	private void salvar(Editora editora) {
		EditoraDao EDao = new EditoraDaoImpl();

		try {
			EDao.salvaEditora(editora);
			JOptionPane.showMessageDialog(null, "Inserida com Sucesso",
					"Sucesso", JOptionPane.INFORMATION_MESSAGE);
		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null, e.getMessage(), "ERRO",
					JOptionPane.ERROR_MESSAGE);

		}

	}

}
